Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2020-PRL-[PURE]Positive-unlabeled learning for open set domain adaptation

https://www.sciencedirect.com/science/article/pii/S0167865520302221

会議はPattern Recognition LettersというJournal。

Introduction

Unsupervised Domain Adaptationでは、LabeledのソースとUnlabeledのソースは異なるp(x)p(x)という設定が普通。

p(y),p(yx)p(y), p(y|x)については言及なし。

だが最近はOpen Set Domain Adaptationというソースとターゲットデータがどちらも含まれているクラスと、片方のドメインにしかないクラスが存在する設定が主流。

外れ値検出などについてちゃんと考えるべき。

ここに、PU Learningを導入する。異常検知とかはPUでできるわけだし。

この研究では、ソースドメインにあるサンプルをP,ターゲットドメインにあるサンプルをUとみなす。Negative Transferという過度にNegativeに傾く問題も解消したという。貢献は以下の通り

  1. nnPUをベースに、ドメイン間の相違のロバスト性を考慮した損失関数を開発。
  2. Domain Adversarial Learningというのを取り込み、Negative Transferを防ぐように頑張った。

Related Works

Domain Adaptation

Domain Adaptationについては、このSurveyを見るといい。📄Arrow icon of a page link2021-Survey-A Comprehensive Survey on Transfer Learning (Part1) Instance Weighting Strategy

分布の距離を最小化するように変換する、Domain DiscriminatorがどっちのDomainのデータなのかを識別できなくなるように敵対的な訓練を行うなどがある。

分類器はソースとターゲットの間を大きく離すように学習され、2つ目の研究は既知クラスと道クラスのサンプルを分離して特徴分布のアライメントに重要度で重みづけしているらしい。これが今までのOpen Set Domain Adaptation。

Open Set Recognition

未知のクラスの存在を加味した学習をする必要がある。浅い層での学習でカスタマイズされたSVMやkNNを使われていたらしい。training dataをaugmentしたりしてるらしい?

外れ値検出

1クラスSVMによる検出がよくある。最近は正常値で学習されたモデルは外れ値に弱いとわかった。オートエンコーダーや、GANで正常値の分布する多様体の学習をしたりなどがある。

PU Learningの説明は略す。

問題設定

  • xRd\mathbf{x} \in \mathbb{R}^d
  • Ground Truthのラベルは^y{1.+1}y \in \{ -1. +1 \}
  • Class Priorはπ=Pr(y=+1)\pi = Pr(y=+1)
  • 問題設定はCase Control

使うのは、uPU 📄Arrow icon of a page link2015-ICML-[uPU] Convex Formulation for Learning from Positive and Unlabeled Data の式

R(f)=πE1[l(g(X))]+EX[l(g(X))]πE1[l(g(X))]=πE1[l(g(X))l(g(X))]+EX[l(g(X))]R(f) = \pi \mathbb{E}_1[l(g(X))] + \mathbb{E}_X [l(-g(X))] - \pi \mathbb{E}_1 [l(-g(X))] \\ = \pi \mathbb{E}_1 [l(g(X)) - l(-g(X))] + \mathbb{E}_X [l(-g(X))]

これについて、表現力が高い負の項が過学習しないようにclipしたり、Gradient AscendをしたのがnnPU 📄Arrow icon of a page link2017-NIPS-[nnPU] Positive-Unlabeled Learning with Non-Negative Risk Estimator である。

R(g)=πEP[l(g(x))]+max(0,πEP[l(g(x))]+EU[l(g(x))])R(g) = \pi \mathbb{E}_P[l(g(\mathbf{x}))] + \max(0, - \pi \mathbb{E}_P[l(-g(\mathbf{x}))] + \mathbb{E}_U [l(-g(\mathbf{x}))])

Autoencoder-based Classification Loss And nnPU risk

nnPUの損失関数は、深層学習の時はよくlog損失を使う。

l(a,y=+1)=loga,l(a,y=1)=log(1a)l(a, y=+1) = \log a, l(a, y=-1) = \log (1 - a)

しかしこのままではPとUが異なるDomainから選ばれている状況には対応できない。

ここでDomain Adaptationを行うが、典型的な手法として敵対的な識別によるDomain Adaptationをやりたい(識別器がどのDomainからきているかを識別できなければ十分にDomain間をマッチできているといえる)。やり方はいろいろあるが、今回はAutoEncoderをつかう。

EncoderRdRe\mathbb{R}^d \to \mathbb{R}^eを使うことで、低次元の特徴を抽出でき、それがDomainが違くとも共通の特徴であることを期待している。そして、ReRd\mathbb{R}^e \to \mathbb{R}^dで高次元にほぼ復元できるようにしたい。

いろいろ使うのはRe\mathbb{R}^eでそれを訓練するためにDecoderがついている感じ。

エネルギーベースの識別器は多様体の近くの領域に低エネルギー、それ以外は高エネルギーを割り当てている。ドメイン間に亘る低次元特徴は多様体の上にあるという仮説に従うんで。

これらを踏まえて、損失関数をEncoder ,Decoderを導入したかたちで再定義する。

l(f(x),y=+1)=xDec(Enc(x))l(f(x),y=1)=κ1Dec(Enc(x))l(f(\mathbf{x}), y=+1) = |\mathbf{x} -Dec(Enc(\mathbf{x}))| \\ l(f(\mathbf{x}),y=-1) = |\kappa \mathbf{1} - Dec(Enc(\mathbf{x})) |

つまり、

  • Encoder, Decoderを通してPositiveのものはそのまま復元できるようにしたい。
    • Negativeは下述のようにκ1\kappa \mathbf{1}という定数へのマッピングをするので、ちゃんとPositiveとの差は大きくなるようにしたい。
  • Negativeのものは、ハイパラκ\kappaがすべての成分となるκ1\kappa \mathbf{1}のベクトルに近づくようにしたい。
    • 入力のx\mathbf{x}に一切依存せずに同じ定数のベクトルへのマッピングをする。これによって、PositiveとNegativeの区別をしやすくするため。

これを踏まえて、nnPUの式は以下の目的関数になる。

Image in a image block

ラベルの決定については、ある閾値τ\tauが存在し、y=sing(τxDec(Enc(x)))y=sing(\tau - |\mathbf{x} - Dec(Enc(\mathbf{x}))|)である。

τ\tauの決定はいつも通り、top-kのようにする。

Open-set Domain Adaptation as a PU Problem

Open-set Domain Adaptationでは、Sourceは{(xis,yis)}i=1Ns\{(\mathbf{x}_i^s, y_i^s) \}_{i=1}^{N_s}があり、Targetは{xjt}j=1Nt\{\mathbf{x}_j^t \}_{j=1}^{N_t}がある。Source Domainにあるクラスよりも真に多いクラスをTarget Domainは含んでいる。例えばSourceには数字0-4のクラスがあるが、Target Domainには数字0-9がある。

このような状況で、共通でもつクラス0-4であるか、Target Domainにしか出現しないクラスかを識別するのがOpen-set Domain Adaptationのやりたいこと。

ここでSource DataをP、Target DataをUとみなせば、確かにPU Learningの形になる。SCARではない上、同じPの中でも所属するクラス(0-4のどれか)を明らかにする必要があるので、以下のような構造になる。

Image in a image block
  • Clsは中間表現を用いて、既知のクラスのうちのどれであるかを識別する。
  • DecはPUREのnnPUの式の最小化に使う。
  • Disは敵対式識別器で、識別の損失が大きいほうが(うまくEncoderをhackし、Domain依存の特徴を見つけられたので)うれしい。
    • 敵対的な訓練でよくある。
    • 実際には、Disを固定して、Encoderを訓練→Encoderを固定してDis、Decoder,Classifierを訓練のように交互に訓練する。
Image in a image block

Experiment

MNIST, MNIST-M, USPS, SVHN(実際のストリートビューの画像)。10クラスのデータセットなので、最初の5個はSource, Target両方に含まれていて、残りの5クラスはTarget Domainにのみ存在すると考える。

CIFAR10, STL-10も同様に使った。Office-31では最初の0-9のクラスは共有、最後の10クラスはTarget Domainで未知らしい(謎)

評価基準は既知クラスの平均精度と、未知のクラスの判定の精度の調和平均。

Result

PUREは選択バイアス(Uの中のP/N比を変更する)があっても、十分にロバストである。π\piを与えずに推定させる形でも、これはうまくいった。

なので、この手法は非常に良い。